Computer programs make heavy use of strings. The input to a program and output of a program are ultimately sets of characters, and the program processes those characters internally. Strings consume a lot of memory. Every time a new string is allocated in a program, more memory is consumed. Typically, identical strings (containing the same characters) are represented as different string objects if they were allocated at different program points. Furthermore, strings are immutable. This means that if a string is modified by the program (for example, a new character is appended to it), then a new string object is allocated. As a result, strings end up consuming a large amount of the entire memory taken by a program. To resolve this issue, modern programming languages offer developers a special application program interface (API), which, when called on a string object, allows all the instance strings that are formally identical in terms of character sequences to share the same memory allocation. In other words, those strings will be identical not only from a syntactical point of view, but will actually be the same object in memory. In the well-known JAVA (mark of Sun Microsystems, Inc., Santa Clara, Calif., USA) programming language, this API is called String.intern( ). In the well-known Microsoft .NET platform, this API is called String.Intern( ).